fn main() {

    /*

    */

    let d1 = Drink {
        flavor:Flavor::Spicy,
        price:25.00,
    };
    // print_drink(d1);
    println!("Hello, 结构体");
    // 普通方法导致丧失所有权
    // print!("{:?}\n", d1.price);

    d1.buy();


    let d2 = Drink::new(5.55);
    d2.buy();
}

struct Drink {

    // 口味
    flavor:Flavor,
    price:f64,

}

impl Drink {
    // 方法, 参数为不可变引用, 并且手动表明了生命周期
    fn buy<'a>(& 'a self){

        if  self.price > 10.0 {
            println!("超过预算---放弃购买")
        }else {
            println!("购买产品")
        }
    }

    // 关联函数
    // Self表示Drink结构体
    fn new(price: f64) -> Self {
        Drink {
            flavor:Flavor::Fruit,
            price:price,
        }
    }
}


enum Flavor {
    // 酸、甜、辣、水果
    Sour,
    Sweet,
    Spicy,
    Fruit,
}

// 普通方法
fn print_drink(drink: Drink){
    match drink.flavor {
        Flavor::Sour => println!("酸味饮料"),
        Flavor::Sweet => println!("甜味饮料"),
        Flavor::Spicy => println!("辣味饮料"),
        Flavor::Fruit => println!("水果味饮料"),

    }
    println!("价格为:{}",drink.price)
}

// 